#幂 - 返回x的y次幂
a = 2
b = 3
c = a**b 
print ( "2的3次方:" , c )

#取整除 - 返回商的整数部分
a = 11
b = 5
c = a // b 
print ("11除以5的整数部分为 ：", c)

#Python赋值运算符
#自加
a = 11
a += 5
print ("a自加5，a为" , a)

#自乘
a = 10
a *= 2
print ("a自乘2，a为" , a)

#自除
a = 10
a /= 2
print ("a自除2，a为" , a)

#幂赋值运算符
a = 5
a **= 3
print ("a的3次幂，a为" , a)#3*3*3，相当于3个5相乘

#取整除赋值运算符
a = 21
a //= 2
print ("取除以2的整数部分" , a)


'''
Python位运算符
'''

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0
#按位与运算符(如果两个相应位都为1,则该位的结果为1,否则为0)
c = a & b;        # 12 = 0000 1100
print ("按位与运算符 的值为：", c)

#按位或运算符(只要对应的二个二进位有一个为1时，结果位就为1)
c = a | b;        # 61 = 0011 1101 
print ("按位或运算符 的值为：", c)

#按位异或运算符(当两对应的二进位相异时，结果为1)
c = a ^ b;        # 49 = 0011 0001
print ("按位异或运算符 的值为：", c)

#按位取反运算符：对数据的每个二进制位取反,即把1变为0,把0变为1。
c = ~a;           # -61 = 1100 0011
print ("按位取反运算符 的值为：", c)

#左移动运算符：运算数的各二进位全部左移若干位，由"<<"右边的数指定移动的位数，高位丢弃，低位补0。
c = a << 2;       # 240 = 1111 0000
print ("左移动运算符 的值为：", c)

#右移动运算符：把">>"左边的运算数的各二进位全部右移若干位，">>"右边的数指定移动的位数
c = a >> 2;       # 15 = 0000 1111
print ("右移动运算符 的值为：", c)



'''
Python逻辑运算符
'''
a = 10
b = 20
#相当与其他语言 &&
if(a > 0 and b > 0):
    print ("两个同时大于0")

if(a > 0 or b > 0):
    print ("两个有一个大于0")

if(not a > b):
    print ("a小于b")


a = 10
b = 20
list = [1, 2, 3, 4, 5 ]
 
if ( a in list ):
   print ("a在列表 list 中")
else:
   print ("a不在列表 list 中")
 
if ( b not in list ):
   print ("b不在列表 list 中")
else:
   print ("b在列表 list 中")
 
#Python身份运算符
#is: 是判断两个标识符是不是引用自一个对象
#is not: 是判断两个标识符是不是引用自不同对象
a = 20
b = 20
if(a is b):
    print ( "a 和 b 有相同的标识" )

if(id(a) == id(b)):
    print ( "a 和 b 有相同的标识" )

b = 30
if ( a is not b ):
   print ("a 和 b 没有相同的标识")
else:
   print ("a 和 b 有相同的标识")